package com.ie.common.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @classname: MybatisPlusConfig
 * @Author: royxu
 * @Description: MP分页拦截器设置
 * @Date: 2025/4/16  10:33
 * @Param:
 * @version: 1.0
 **/
@Slf4j
@Configuration
public class MybatisPlusConfig {
    // https://blog.csdn.net/m0_43450656/article/details/124543348  Mybatis-Plus的分页插件在3.4版本后的使用方法
    // https://blog.csdn.net/baidu_28705493/article/details/141378451 Spring Boot集成MyBatis配置流程
    // 配置分页插件
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        // 创建MybatisPlusInterceptor实例，MyBatis-Plus通过拦截器（Interceptor）机制来实现对SQL操作的增强。
        // MybatisPlusInterceptor是MyBatis-Plus提供的拦截器，用于拦截SQL操作，并在操作前后执行一些额外的逻辑
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        /*
         * 添加PaginationInnerInterceptor（分页内部拦截器），指定数据库类型为MySQL。向一个拦截器链中添加一个用于
         * 分页的拦截器。具体来说，它使用了MyBatis-Plus框架中的PaginationInnerInterceptor，这是一个用于处理数
         * 据库分页的拦截器，支持多种数据库类型，包括MySQL。
         */
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        // 返回配置好的拦截器实例。
        log.info("This is mybatisPlusInterceptor!");
        return interceptor;
    }
}
